package com.rainbowred.common.util.aes;

import cn.hutool.core.util.RandomUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * @Desc: AES加密工具类
 * @Date: 2022/4/13 18:08
 * @Author: pengweibiao
 **/
@Slf4j
public class AESEncodingUtil {

    /**
     * 用于随机选的数字
     */
    public static final String BASE_NUMBER = "0123456789";

    /**
     * 用于随机选的字符
     */
    public static final String BASE_CHAR = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    /**
     * 用于随机选的字符和数字
     */
    public static final String BASE_CHAR_NUMBER = BASE_CHAR + BASE_NUMBER;



    /**
     * 纯加密
     * @param json 明文
     */
    public static String jsonEncrypt(String json, String appid, String aeskey, String token) {
        WXBizMsgCrypt pc = new WXBizMsgCrypt(token, aeskey, appid);
        return pc.encrypt(json);
    }

    /**
     * 纯解密
     * @param code 密文
     */
    public static String jsonDecrypt(String code, String appid, String aeskey, String token) {
        WXBizMsgCrypt pc = new WXBizMsgCrypt(token, aeskey, appid);
        return pc.decrypt(code);
    }


    /**
     * 生成用于加密的随机数
     * @return
     */
    public static String getNonce(int length){
        return RandomUtil.randomString(BASE_CHAR_NUMBER,length);
    }

}
